@openapi-flow/langchain 0.2.0 → 0.3.1

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 (235) hide show
  1. package/README.md +123 -1
  2. package/dist/arguments/analyze-api-input-answers.d.ts +3 -0
  3. package/dist/arguments/analyze-api-input-answers.js +87 -0
  4. package/dist/arguments/analyze-api-request-media-type.d.ts +4 -0
  5. package/dist/arguments/analyze-api-request-media-type.js +50 -0
  6. package/dist/arguments/extract-api-input-answers.d.ts +3 -0
  7. package/dist/arguments/extract-api-input-answers.js +4 -0
  8. package/dist/arguments/generate-api-arguments.js +43 -28
  9. package/dist/arguments/select-api-request-media-type.js +8 -37
  10. package/dist/bindings/plan-api-bindings.js +30 -23
  11. package/dist/draft/analyze-workflow-draft-edit.d.ts +4 -0
  12. package/dist/draft/analyze-workflow-draft-edit.js +84 -0
  13. package/dist/draft/generate-workflow-draft-api-call-arguments.d.ts +3 -0
  14. package/dist/draft/generate-workflow-draft-api-call-arguments.js +88 -0
  15. package/dist/draft/generate-workflow-draft-api-input-edits.d.ts +4 -0
  16. package/dist/draft/generate-workflow-draft-api-input-edits.js +58 -0
  17. package/dist/draft/generate-workflow-draft-native-node-addition.d.ts +4 -0
  18. package/dist/draft/generate-workflow-draft-native-node-addition.js +137 -0
  19. package/dist/draft/generate-workflow-draft-native-parameter-edits.d.ts +3 -0
  20. package/dist/draft/generate-workflow-draft-native-parameter-edits.js +71 -0
  21. package/dist/draft/plan-workflow-draft-api-binding-edit.d.ts +4 -0
  22. package/dist/draft/plan-workflow-draft-api-binding-edit.js +103 -0
  23. package/dist/draft/plan-workflow-draft-api-call-bindings.d.ts +3 -0
  24. package/dist/draft/plan-workflow-draft-api-call-bindings.js +114 -0
  25. package/dist/draft/plan-workflow-draft-clarification-scopes.d.ts +4 -0
  26. package/dist/draft/plan-workflow-draft-clarification-scopes.js +77 -0
  27. package/dist/draft/plan-workflow-draft-connection-edit.d.ts +4 -0
  28. package/dist/draft/plan-workflow-draft-connection-edit.js +79 -0
  29. package/dist/draft/plan-workflow-draft-native-dependencies.d.ts +4 -0
  30. package/dist/draft/plan-workflow-draft-native-dependencies.js +45 -0
  31. package/dist/draft/plan-workflow-draft-native-reference-repair.d.ts +4 -0
  32. package/dist/draft/plan-workflow-draft-native-reference-repair.js +68 -0
  33. package/dist/draft/resolve-workflow-draft-edit-proposal.d.ts +3 -0
  34. package/dist/draft/resolve-workflow-draft-edit-proposal.js +39 -0
  35. package/dist/draft/select-workflow-draft-api-binding-inputs.d.ts +4 -0
  36. package/dist/draft/select-workflow-draft-api-binding-inputs.js +83 -0
  37. package/dist/draft/select-workflow-draft-api-input-edit-targets.d.ts +4 -0
  38. package/dist/draft/select-workflow-draft-api-input-edit-targets.js +55 -0
  39. package/dist/draft/select-workflow-draft-native-node-parameter-ownership.d.ts +4 -0
  40. package/dist/draft/select-workflow-draft-native-node-parameter-ownership.js +81 -0
  41. package/dist/draft/select-workflow-draft-native-parameter-edit-targets.d.ts +3 -0
  42. package/dist/draft/select-workflow-draft-native-parameter-edit-targets.js +51 -0
  43. package/dist/draft/workflow-draft-api-binding-edit-planning-error.d.ts +5 -0
  44. package/dist/draft/workflow-draft-api-binding-edit-planning-error.js +10 -0
  45. package/dist/draft/workflow-draft-api-call-planning-error.d.ts +5 -0
  46. package/dist/draft/workflow-draft-api-call-planning-error.js +10 -0
  47. package/dist/draft/workflow-draft-api-input-edit-planning-error.d.ts +5 -0
  48. package/dist/draft/workflow-draft-api-input-edit-planning-error.js +10 -0
  49. package/dist/draft/workflow-draft-clarification-scope-planning-error.d.ts +5 -0
  50. package/dist/draft/workflow-draft-clarification-scope-planning-error.js +8 -0
  51. package/dist/draft/workflow-draft-connection-edit-planning-error.d.ts +5 -0
  52. package/dist/draft/workflow-draft-connection-edit-planning-error.js +10 -0
  53. package/dist/draft/workflow-draft-edit-planning-error.d.ts +5 -0
  54. package/dist/draft/workflow-draft-edit-planning-error.js +8 -0
  55. package/dist/draft/workflow-draft-native-node-addition-planning-error.d.ts +5 -0
  56. package/dist/draft/workflow-draft-native-node-addition-planning-error.js +10 -0
  57. package/dist/draft/workflow-draft-native-parameter-edit-planning-error.d.ts +5 -0
  58. package/dist/draft/workflow-draft-native-parameter-edit-planning-error.js +8 -0
  59. package/dist/draft/workflow-draft-native-reference-repair-planning-error.d.ts +5 -0
  60. package/dist/draft/workflow-draft-native-reference-repair-planning-error.js +8 -0
  61. package/dist/prompts/api-arguments-prompt.d.ts +1 -1
  62. package/dist/prompts/api-arguments-prompt.js +1 -1
  63. package/dist/prompts/api-bindings-prompt.d.ts +1 -1
  64. package/dist/prompts/api-bindings-prompt.js +1 -0
  65. package/dist/prompts/api-input-answers-prompt.d.ts +1 -0
  66. package/dist/prompts/api-input-answers-prompt.js +7 -0
  67. package/dist/prompts/api-request-media-type-prompt.d.ts +1 -1
  68. package/dist/prompts/api-request-media-type-prompt.js +1 -1
  69. package/dist/prompts/api-selection-analysis-prompt.d.ts +1 -0
  70. package/dist/prompts/api-selection-analysis-prompt.js +5 -0
  71. package/dist/prompts/api-selection-explanation-prompt.d.ts +1 -0
  72. package/dist/prompts/api-selection-explanation-prompt.js +1 -0
  73. package/dist/prompts/native-instance-dependencies-prompt.d.ts +1 -0
  74. package/dist/prompts/native-instance-dependencies-prompt.js +8 -0
  75. package/dist/prompts/native-node-planning-prompt.d.ts +3 -1
  76. package/dist/prompts/native-node-planning-prompt.js +14 -1
  77. package/dist/prompts/reviewable-workflow-graph-prompt.d.ts +1 -1
  78. package/dist/prompts/workflow-connections-prompt.d.ts +1 -1
  79. package/dist/prompts/workflow-connections-prompt.js +4 -1
  80. package/dist/prompts/workflow-draft-api-binding-edit-prompt.d.ts +1 -0
  81. package/dist/prompts/workflow-draft-api-binding-edit-prompt.js +9 -0
  82. package/dist/prompts/workflow-draft-api-call-planning-prompt.d.ts +3 -0
  83. package/dist/prompts/workflow-draft-api-call-planning-prompt.js +39 -0
  84. package/dist/prompts/workflow-draft-api-input-edit-prompt.d.ts +2 -0
  85. package/dist/prompts/workflow-draft-api-input-edit-prompt.js +14 -0
  86. package/dist/prompts/workflow-draft-clarification-scope-prompt.d.ts +1 -0
  87. package/dist/prompts/workflow-draft-clarification-scope-prompt.js +10 -0
  88. package/dist/prompts/workflow-draft-connection-edit-prompt.d.ts +1 -0
  89. package/dist/prompts/workflow-draft-connection-edit-prompt.js +7 -0
  90. package/dist/prompts/workflow-draft-edit-prompt.d.ts +1 -0
  91. package/dist/prompts/workflow-draft-edit-prompt.js +15 -0
  92. package/dist/prompts/workflow-draft-native-dependencies-prompt.d.ts +1 -0
  93. package/dist/prompts/workflow-draft-native-dependencies-prompt.js +5 -0
  94. package/dist/prompts/workflow-draft-native-node-addition-prompt.d.ts +2 -0
  95. package/dist/prompts/workflow-draft-native-node-addition-prompt.js +6 -0
  96. package/dist/prompts/workflow-draft-native-parameter-edit-prompt.d.ts +2 -0
  97. package/dist/prompts/workflow-draft-native-parameter-edit-prompt.js +2 -0
  98. package/dist/prompts/workflow-draft-native-reference-repair-prompt.d.ts +1 -0
  99. package/dist/prompts/workflow-draft-native-reference-repair-prompt.js +7 -0
  100. package/dist/prompts/workflow-graph-prompt.d.ts +1 -1
  101. package/dist/prompts/workflow-graph-prompt.js +2 -0
  102. package/dist/prompts/workflow-requirements-prompt.d.ts +1 -0
  103. package/dist/prompts/workflow-requirements-prompt.js +14 -0
  104. package/dist/prompts/workflow-review-suggestions-prompt.d.ts +1 -0
  105. package/dist/prompts/workflow-review-suggestions-prompt.js +4 -0
  106. package/dist/prompts/workflow-user-action-evidence-prompt.d.ts +1 -0
  107. package/dist/prompts/workflow-user-action-evidence-prompt.js +1 -0
  108. package/dist/public-api.d.ts +47 -0
  109. package/dist/public-api.js +34 -0
  110. package/dist/requirements/clarify-workflow-requirements.d.ts +4 -0
  111. package/dist/requirements/clarify-workflow-requirements.js +53 -0
  112. package/dist/requirements/resolve-workflow-requirements-evidence.d.ts +4 -0
  113. package/dist/requirements/resolve-workflow-requirements-evidence.js +58 -0
  114. package/dist/review/suggest-workflow-review-follow-ups.d.ts +4 -0
  115. package/dist/review/suggest-workflow-review-follow-ups.js +87 -0
  116. package/dist/review/workflow-review-suggestion-planning-error.d.ts +5 -0
  117. package/dist/review/workflow-review-suggestion-planning-error.js +8 -0
  118. package/dist/schemas/api-binding-plan-schema.d.ts +7 -2
  119. package/dist/schemas/api-binding-plan-schema.js +11 -1
  120. package/dist/schemas/api-input-answer-source-schema.d.ts +16 -0
  121. package/dist/schemas/api-input-answer-source-schema.js +28 -0
  122. package/dist/schemas/api-literal-generation-output-schema.d.ts +11 -0
  123. package/dist/schemas/api-literal-generation-output-schema.js +20 -0
  124. package/dist/schemas/api-request-media-type-schema.d.ts +5 -2
  125. package/dist/schemas/api-request-media-type-schema.js +14 -2
  126. package/dist/schemas/api-selection-analysis-schema.d.ts +41 -0
  127. package/dist/schemas/api-selection-analysis-schema.js +23 -0
  128. package/dist/schemas/api-selection-options-schema.d.ts +4 -0
  129. package/dist/schemas/api-selection-options-schema.js +4 -0
  130. package/dist/schemas/api-selection-schema.d.ts +14 -1
  131. package/dist/schemas/api-selection-schema.js +6 -5
  132. package/dist/schemas/create-workflow-message-evidence-selection-schema.d.ts +16 -0
  133. package/dist/schemas/create-workflow-message-evidence-selection-schema.js +22 -0
  134. package/dist/schemas/native-node-explanation-schema.d.ts +5 -0
  135. package/dist/schemas/native-node-explanation-schema.js +9 -0
  136. package/dist/schemas/native-node-parameter-contract.d.ts +3 -0
  137. package/dist/schemas/native-node-parameter-contract.js +30 -0
  138. package/dist/schemas/native-node-planning-contract.d.ts +3 -0
  139. package/dist/schemas/native-node-planning-contract.js +44 -0
  140. package/dist/schemas/request-media-selection-options-schema.d.ts +4 -0
  141. package/dist/schemas/request-media-selection-options-schema.js +4 -0
  142. package/dist/schemas/reviewable-workflow-graph-schema.d.ts +4 -2
  143. package/dist/schemas/reviewable-workflow-graph-schema.js +13 -1
  144. package/dist/schemas/serialize-structured-output-schema.d.ts +5 -0
  145. package/dist/schemas/serialize-structured-output-schema.js +10 -0
  146. package/dist/schemas/serialize-workflow-requirements-schema.d.ts +4 -0
  147. package/dist/schemas/serialize-workflow-requirements-schema.js +5 -0
  148. package/dist/schemas/with-api-selection-explanation.d.ts +10 -0
  149. package/dist/schemas/with-api-selection-explanation.js +15 -0
  150. package/dist/schemas/workflow-connection-explanation-schema.d.ts +5 -0
  151. package/dist/schemas/workflow-connection-explanation-schema.js +9 -0
  152. package/dist/schemas/workflow-draft-edit-schema.d.ts +3 -0
  153. package/dist/schemas/workflow-draft-edit-schema.js +17 -0
  154. package/dist/schemas/workflow-graph-explanation-schema.d.ts +5 -0
  155. package/dist/schemas/workflow-graph-explanation-schema.js +9 -0
  156. package/dist/schemas/workflow-graph-proposal-schema.d.ts +2 -2
  157. package/dist/schemas/workflow-graph-proposal-schema.js +14 -7
  158. package/dist/schemas/workflow-planning-evidence-schemas.d.ts +20 -0
  159. package/dist/schemas/workflow-planning-evidence-schemas.js +44 -0
  160. package/dist/schemas/workflow-requirements-schema.d.ts +3 -0
  161. package/dist/schemas/workflow-requirements-schema.js +6 -0
  162. package/dist/schemas/workflow-review-suggestions-schema.d.ts +4 -0
  163. package/dist/schemas/workflow-review-suggestions-schema.js +18 -0
  164. package/dist/selection/analyze-api-selection.d.ts +4 -0
  165. package/dist/selection/analyze-api-selection.js +117 -0
  166. package/dist/selection/resolve-api-selection-options.d.ts +3 -0
  167. package/dist/selection/resolve-api-selection-options.js +6 -0
  168. package/dist/selection/select-api-operations.d.ts +1 -1
  169. package/dist/selection/select-api-operations.js +39 -6
  170. package/dist/types/api-input-answers.d.ts +16 -0
  171. package/dist/types/api-input-answers.js +1 -0
  172. package/dist/types/api-selection-analysis.d.ts +3 -0
  173. package/dist/types/api-selection-analysis.js +1 -0
  174. package/dist/types/argument-generation.d.ts +11 -5
  175. package/dist/types/binding-planning.d.ts +7 -5
  176. package/dist/types/native-node-planning.d.ts +67 -16
  177. package/dist/types/operation-selection.d.ts +5 -1
  178. package/dist/types/request-media-selection.d.ts +7 -2
  179. package/dist/types/reviewable-workflow-planning.d.ts +11 -2
  180. package/dist/types/structured-output-schema.d.ts +3 -0
  181. package/dist/types/structured-output-schema.js +1 -0
  182. package/dist/types/workflow-clarification.d.ts +23 -0
  183. package/dist/types/workflow-clarification.js +1 -0
  184. package/dist/types/workflow-draft-api-binding-edit.d.ts +9 -0
  185. package/dist/types/workflow-draft-api-binding-edit.js +1 -0
  186. package/dist/types/workflow-draft-api-call-planning.d.ts +15 -0
  187. package/dist/types/workflow-draft-api-call-planning.js +1 -0
  188. package/dist/types/workflow-draft-api-input-edit.d.ts +13 -0
  189. package/dist/types/workflow-draft-api-input-edit.js +1 -0
  190. package/dist/types/workflow-draft-clarification.d.ts +9 -0
  191. package/dist/types/workflow-draft-clarification.js +1 -0
  192. package/dist/types/workflow-draft-connection-edit.d.ts +9 -0
  193. package/dist/types/workflow-draft-connection-edit.js +1 -0
  194. package/dist/types/workflow-draft-edit.d.ts +16 -0
  195. package/dist/types/workflow-draft-edit.js +1 -0
  196. package/dist/types/workflow-draft-native-node-addition.d.ts +18 -0
  197. package/dist/types/workflow-draft-native-node-addition.js +1 -0
  198. package/dist/types/workflow-draft-native-parameter-edit.d.ts +13 -0
  199. package/dist/types/workflow-draft-native-parameter-edit.js +1 -0
  200. package/dist/types/workflow-draft-native-reference-repair.d.ts +9 -0
  201. package/dist/types/workflow-draft-native-reference-repair.js +1 -0
  202. package/dist/types/workflow-message-evidence-selection.d.ts +6 -0
  203. package/dist/types/workflow-message-evidence-selection.js +1 -0
  204. package/dist/types/workflow-orchestration.d.ts +13 -15
  205. package/dist/types/workflow-planning.d.ts +19 -7
  206. package/dist/types/workflow-review-suggestions.d.ts +12 -0
  207. package/dist/types/workflow-review-suggestions.js +1 -0
  208. package/dist/workflow/generate-native-node-parameters.d.ts +4 -0
  209. package/dist/workflow/generate-native-node-parameters.js +87 -0
  210. package/dist/workflow/orchestrate-workflow.js +2 -2
  211. package/dist/workflow/plan-native-instance-dependencies.d.ts +4 -0
  212. package/dist/workflow/plan-native-instance-dependencies.js +45 -0
  213. package/dist/workflow/plan-native-nodes.js +63 -66
  214. package/dist/workflow/plan-reviewable-workflow-graph.js +33 -64
  215. package/dist/workflow/plan-workflow-connections.js +35 -30
  216. package/dist/workflow/plan-workflow-graph.js +45 -64
  217. package/dist/workflow/resolve-native-node-parameter-source.d.ts +4 -0
  218. package/dist/workflow/resolve-native-node-parameter-source.js +7 -0
  219. package/dist/workflow/resolve-native-node-planning-output.d.ts +3 -0
  220. package/dist/workflow/resolve-native-node-planning-output.js +33 -0
  221. package/dist/workflow/resolve-workflow-connection-output.d.ts +3 -0
  222. package/dist/workflow/resolve-workflow-connection-output.js +22 -0
  223. package/dist/workflow/resolve-workflow-graph-output.d.ts +5 -0
  224. package/dist/workflow/resolve-workflow-graph-output.js +69 -0
  225. package/dist/workflow/select-native-node-instances.d.ts +4 -0
  226. package/dist/workflow/select-native-node-instances.js +57 -0
  227. package/package.json +7 -4
  228. package/dist/schemas/native-node-plan-schema.d.ts +0 -4
  229. package/dist/schemas/native-node-plan-schema.js +0 -26
  230. package/dist/workflow/assemble-native-node-materials.d.ts +0 -3
  231. package/dist/workflow/assemble-native-node-materials.js +0 -8
  232. package/dist/workflow/create-prepared-native-node-materials.d.ts +0 -4
  233. package/dist/workflow/create-prepared-native-node-materials.js +0 -15
  234. package/dist/workflow/prepare-workflow-connection-materials.d.ts +0 -3
  235. package/dist/workflow/prepare-workflow-connection-materials.js +0 -66
@@ -0,0 +1,20 @@
1
+ import { z } from 'zod';
2
+ import type { WorkflowPlanningContextDescription } from '@openapi-flow/core';
3
+ import type { ProposedWorkflowPlanningEvidence } from '../types/workflow-clarification.js';
4
+ /** Model candidates are code-owned references, not model-built OAS keys or pointers. */
5
+ export declare function createWorkflowPlanningEvidenceSchemas(context: WorkflowPlanningContextDescription, candidateIds: string[], sourceMessageIds: string[]): {
6
+ message: z.ZodPipe<z.ZodObject<{
7
+ kind: z.ZodLiteral<"message">;
8
+ messageId: z.ZodEnum<{
9
+ [x: string]: string;
10
+ }>;
11
+ }, z.core.$strict>, z.ZodTransform<{
12
+ quote: string;
13
+ kind: "message";
14
+ messageId: string;
15
+ }, {
16
+ kind: "message";
17
+ messageId: string;
18
+ }>>;
19
+ evidence: z.ZodType<ProposedWorkflowPlanningEvidence, unknown, z.core.$ZodTypeInternals<ProposedWorkflowPlanningEvidence, unknown>>;
20
+ };
@@ -0,0 +1,44 @@
1
+ import { z } from 'zod';
2
+ import { createWorkflowMessageEvidenceSelectionSchema } from './create-workflow-message-evidence-selection-schema.js';
3
+ /** Model candidates are code-owned references, not model-built OAS keys or pointers. */
4
+ export function createWorkflowPlanningEvidenceSchemas(context, candidateIds, sourceMessageIds) {
5
+ const message = (ids) => {
6
+ const selected = ids.map((id) => {
7
+ const source = context.messages.find((item) => item.id === id);
8
+ if (!source)
9
+ throw new Error(`Planning evidence references unavailable message ${id}`);
10
+ return source;
11
+ });
12
+ return createWorkflowMessageEvidenceSelectionSchema(selected);
13
+ };
14
+ const evidence = z.union([
15
+ message(context.messages.map((item) => item.id)),
16
+ ...(context.entrypoint === undefined
17
+ ? []
18
+ : [
19
+ z.strictObject({
20
+ kind: z.literal('entrypoint'),
21
+ entrypoint: z.literal(context.entrypoint.kind),
22
+ }),
23
+ ]),
24
+ ...(candidateIds.length
25
+ ? [
26
+ z.strictObject({
27
+ kind: z.literal('oas'),
28
+ candidateId: z
29
+ .enum(candidateIds)
30
+ .describe('Select a supplied operation; code attaches its original identity and root location.'),
31
+ }),
32
+ ]
33
+ : []),
34
+ ...(context.capabilities.length
35
+ ? [
36
+ z.strictObject({
37
+ kind: z.literal('native'),
38
+ capability: z.enum(context.capabilities.map((item) => item.name)),
39
+ }),
40
+ ]
41
+ : []),
42
+ ]);
43
+ return { message: message(sourceMessageIds), evidence };
44
+ }
@@ -0,0 +1,3 @@
1
+ import type { ClarificationQuestionLimits, ResolvedWorkflowClarificationOptions, WorkflowPlanningContextDescription } from '@openapi-flow/core';
2
+ import type { WorkflowClarificationOasCandidate } from '../types/workflow-clarification.js';
3
+ export declare function createWorkflowRequirementsSchema(limits: ClarificationQuestionLimits, options: ResolvedWorkflowClarificationOptions, context: WorkflowPlanningContextDescription, candidates: WorkflowClarificationOasCandidate[]): import("zod").ZodType<import("@openapi-flow/core").WorkflowRequirementsProposal<import("../types/workflow-clarification.js").ProposedWorkflowPlanningEvidence>, unknown, import("zod/v4/core").$ZodTypeInternals<import("@openapi-flow/core").WorkflowRequirementsProposal<import("../types/workflow-clarification.js").ProposedWorkflowPlanningEvidence>, unknown>>;
@@ -0,0 +1,6 @@
1
+ import { createWorkflowRequirementsProposalSchema } from '@openapi-flow/core';
2
+ import { createWorkflowPlanningEvidenceSchemas } from './workflow-planning-evidence-schemas.js';
3
+ export function createWorkflowRequirementsSchema(limits, options, context, candidates) {
4
+ const { message, evidence } = createWorkflowPlanningEvidenceSchemas(context, candidates.map((candidate) => candidate.candidateId), context.messages.map((item) => item.id));
5
+ return createWorkflowRequirementsProposalSchema(limits, options, evidence, message);
6
+ }
@@ -0,0 +1,4 @@
1
+ import { z } from 'zod';
2
+ import type { WorkflowReviewSuggestionsDescription } from '@openapi-flow/core';
3
+ import type { ProposedWorkflowReviewSuggestionEvidence } from '../types/workflow-review-suggestions.js';
4
+ export declare function createWorkflowReviewSuggestionsSchema(description: WorkflowReviewSuggestionsDescription, candidateIds: string[]): z.ZodType<import("@openapi-flow/core").WorkflowReviewSuggestionsProposal<ProposedWorkflowReviewSuggestionEvidence>, unknown, z.core.$ZodTypeInternals<import("@openapi-flow/core").WorkflowReviewSuggestionsProposal<ProposedWorkflowReviewSuggestionEvidence>, unknown>>;
@@ -0,0 +1,18 @@
1
+ import { z } from 'zod';
2
+ import { createWorkflowReviewSuggestionsProposalSchema } from '@openapi-flow/core';
3
+ import { createWorkflowPlanningEvidenceSchemas } from './workflow-planning-evidence-schemas.js';
4
+ export function createWorkflowReviewSuggestionsSchema(description, candidateIds) {
5
+ const original = createWorkflowPlanningEvidenceSchemas(description.context, candidateIds, description.context.messages.map((message) => message.id));
6
+ const evidence = z.union([
7
+ original.evidence,
8
+ ...(description.boundary.questions.length
9
+ ? [
10
+ z.strictObject({
11
+ kind: z.literal('review-question'),
12
+ questionId: z.enum(description.boundary.questions.map((question) => question.id)),
13
+ }),
14
+ ]
15
+ : []),
16
+ ]);
17
+ return createWorkflowReviewSuggestionsProposalSchema(description, evidence);
18
+ }
@@ -0,0 +1,4 @@
1
+ import type { ApiSelectionAnalysis } from '@openapi-flow/core';
2
+ import type { SelectApiOperationsInput } from '../types/operation-selection.js';
3
+ /** Additive clarification boundary; the existing selector keeps its output contract. */
4
+ export declare function analyzeApiSelection(input: SelectApiOperationsInput): Promise<ApiSelectionAnalysis>;
@@ -0,0 +1,117 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { HumanMessage, SystemMessage } from '@langchain/core/messages';
3
+ import { describeApiSelectionContext, createApiSelectionExplanation, } from '@openapi-flow/core';
4
+ import { createApiSelectionAnalysisSchema } from '../schemas/api-selection-analysis-schema.js';
5
+ import { apiSelectionAnalysisPrompt } from '../prompts/api-selection-analysis-prompt.js';
6
+ import { parseStructuredOutput } from '../legacy/planning/parse-structured-output.js';
7
+ import { assertSelectionInput } from '../legacy/planning/select-operation.js';
8
+ import { selectApiOperations } from './select-api-operations.js';
9
+ import { resolveApiSelectionOptions } from './resolve-api-selection-options.js';
10
+ import { apiSelectionExplanationPrompt } from '../prompts/api-selection-explanation-prompt.js';
11
+ /** Additive clarification boundary; the existing selector keeps its output contract. */
12
+ export async function analyzeApiSelection(input) {
13
+ assertSelectionInput(input.scenario, input.model);
14
+ if (!Array.isArray(input.operations))
15
+ throw new Error('operations must be an array');
16
+ const includeExplanations = resolveApiSelectionOptions({
17
+ includeExplanations: input.includeExplanations,
18
+ });
19
+ const context = describeApiSelectionContext({
20
+ scenario: input.scenario,
21
+ operations: input.operations,
22
+ });
23
+ if (!input.operations.length)
24
+ return { selection: await selectApiOperations(input), questions: [] };
25
+ const candidates = context.operations.map((operation, index) => ({
26
+ ...operation,
27
+ candidateId: `candidate-${index + 1}`,
28
+ }));
29
+ const schema = createApiSelectionAnalysisSchema(candidates.map((item) => item.candidateId), includeExplanations);
30
+ const proposed = await input.model
31
+ .withStructuredOutput(schema, {
32
+ name: 'analyze_api_selection',
33
+ method: 'jsonSchema',
34
+ strict: true,
35
+ })
36
+ .invoke([
37
+ new SystemMessage(`${apiSelectionAnalysisPrompt}\n${apiSelectionExplanationPrompt}`),
38
+ new HumanMessage(JSON.stringify({ scenario: context.scenario, candidates })),
39
+ ]);
40
+ const parsed = parseStructuredOutput(schema, proposed, 'model API selection analysis');
41
+ const byId = new Map(candidates.map((item) => [item.candidateId, item]));
42
+ const selected = parsed.operations.map((item) => {
43
+ const candidate = byId.get(item.candidateId);
44
+ if (!candidate)
45
+ throw new Error(`Unknown API candidate ${item.candidateId}`);
46
+ return {
47
+ key: structuredClone(candidate.key),
48
+ purpose: item.purpose,
49
+ ...('explanation' in item
50
+ ? {
51
+ explanation: createApiSelectionExplanation({
52
+ context,
53
+ basis: { kind: 'candidates', operations: [candidate.key] },
54
+ reason: item.explanation.reason,
55
+ }),
56
+ }
57
+ : {}),
58
+ };
59
+ });
60
+ const questions = parsed.questions.map((question, index) => {
61
+ if (new Set(question.candidateIds).size !== question.candidateIds.length)
62
+ throw new Error('API alternatives must be distinct');
63
+ const alternatives = question.candidateIds.map((id) => {
64
+ const candidate = byId.get(id);
65
+ if (!candidate)
66
+ throw new Error(`Unknown API alternative ${id}`);
67
+ return structuredClone(context.operations[candidates.indexOf(candidate)]);
68
+ });
69
+ return {
70
+ kind: 'operation-choice',
71
+ id: createHash('sha256')
72
+ .update(JSON.stringify([
73
+ context.scenario,
74
+ index,
75
+ question.purpose,
76
+ alternatives.map((item) => item.key),
77
+ ]))
78
+ .digest('hex'),
79
+ message: question.message,
80
+ purpose: question.purpose,
81
+ candidates: alternatives,
82
+ ...('explanation' in question
83
+ ? {
84
+ explanation: createApiSelectionExplanation({
85
+ context,
86
+ basis: {
87
+ kind: 'candidates',
88
+ operations: alternatives.map((candidate) => candidate.key),
89
+ },
90
+ reason: question.explanation.reason,
91
+ }),
92
+ }
93
+ : {}),
94
+ };
95
+ });
96
+ if (!selected.length && !questions.length && !parsed.gaps.length)
97
+ throw new Error('API analysis must contain operations, questions or gaps');
98
+ return {
99
+ selection: {
100
+ operations: selected,
101
+ gaps: parsed.gaps.map((gap) => ({
102
+ kind: 'missing_operation',
103
+ description: gap.description,
104
+ ...('explanation' in gap
105
+ ? {
106
+ explanation: createApiSelectionExplanation({
107
+ context,
108
+ basis: { kind: 'catalog' },
109
+ reason: gap.explanation.reason,
110
+ }),
111
+ }
112
+ : {}),
113
+ })),
114
+ },
115
+ questions,
116
+ };
117
+ }
@@ -0,0 +1,3 @@
1
+ import type { ApiSelectionModelOptions } from '../types/operation-selection.js';
2
+ /** Optional standalone selector feature; absence preserves the non-explanation API. */
3
+ export declare function resolveApiSelectionOptions(input: ApiSelectionModelOptions): boolean;
@@ -0,0 +1,6 @@
1
+ import { apiSelectionOptionsSchema } from '../schemas/api-selection-options-schema.js';
2
+ /** Optional standalone selector feature; absence preserves the non-explanation API. */
3
+ export function resolveApiSelectionOptions(input) {
4
+ const options = apiSelectionOptionsSchema.parse(input);
5
+ return options.includeExplanations === true;
6
+ }
@@ -1,3 +1,3 @@
1
1
  import type { ApiSelection } from '@openapi-flow/core';
2
2
  import type { SelectApiOperationsInput } from '../types/operation-selection.js';
3
- export declare function selectApiOperations({ operations, scenario, model, }: SelectApiOperationsInput): Promise<ApiSelection>;
3
+ export declare function selectApiOperations(input: SelectApiOperationsInput): Promise<ApiSelection>;
@@ -1,12 +1,24 @@
1
1
  import { SystemMessage, HumanMessage } from '@langchain/core/messages';
2
+ import { describeApiSelectionContext, createApiSelectionExplanation, } from '@openapi-flow/core';
2
3
  import { createApiSelectionSchema } from '../schemas/api-selection-schema.js';
3
4
  import { operationSelectionPrompt } from '../prompts/operation-selection-prompt.js';
4
5
  import { assertSelectionInput } from '../legacy/planning/select-operation.js';
5
6
  import { parseStructuredOutput } from '../legacy/planning/parse-structured-output.js';
6
- export async function selectApiOperations({ operations, scenario, model, }) {
7
+ import { resolveApiSelectionOptions } from './resolve-api-selection-options.js';
8
+ import { apiSelectionExplanationPrompt } from '../prompts/api-selection-explanation-prompt.js';
9
+ export async function selectApiOperations(input) {
10
+ const { scenario, model } = input;
7
11
  assertSelectionInput(scenario, model);
8
- if (!Array.isArray(operations))
12
+ if (!Array.isArray(input.operations))
9
13
  throw new Error('operations must be an array');
14
+ const includeExplanations = resolveApiSelectionOptions({
15
+ includeExplanations: input.includeExplanations,
16
+ });
17
+ const context = describeApiSelectionContext({
18
+ scenario,
19
+ operations: input.operations,
20
+ });
21
+ const { operations } = context;
10
22
  if (operations.length === 0)
11
23
  return {
12
24
  operations: [],
@@ -18,10 +30,10 @@ export async function selectApiOperations({ operations, scenario, model, }) {
18
30
  ],
19
31
  };
20
32
  const candidates = operations.map((operation, index) => ({
21
- candidateId: `candidate-${index + 1}`,
22
33
  ...operation,
34
+ candidateId: `candidate-${index + 1}`,
23
35
  }));
24
- const schema = createApiSelectionSchema(candidates.map((candidate) => candidate.candidateId));
36
+ const schema = createApiSelectionSchema(candidates.map((candidate) => candidate.candidateId), includeExplanations);
25
37
  const proposed = await model
26
38
  .withStructuredOutput(schema, {
27
39
  name: 'select_api_operations',
@@ -29,7 +41,7 @@ export async function selectApiOperations({ operations, scenario, model, }) {
29
41
  strict: true,
30
42
  })
31
43
  .invoke([
32
- new SystemMessage(operationSelectionPrompt),
44
+ new SystemMessage(`${operationSelectionPrompt}\n${apiSelectionExplanationPrompt}`),
33
45
  new HumanMessage(JSON.stringify({ scenario, candidates })),
34
46
  ]);
35
47
  const selection = parseStructuredOutput(schema, proposed, 'model API selection');
@@ -41,11 +53,32 @@ export async function selectApiOperations({ operations, scenario, model, }) {
41
53
  const candidate = byId.get(item.candidateId);
42
54
  if (!candidate)
43
55
  throw new Error(`model API selection references unknown ${item.candidateId}`);
44
- return { key: { ...candidate.key }, purpose: item.purpose };
56
+ return {
57
+ key: { ...candidate.key },
58
+ purpose: item.purpose,
59
+ ...('explanation' in item
60
+ ? {
61
+ explanation: createApiSelectionExplanation({
62
+ context,
63
+ basis: { kind: 'candidates', operations: [candidate.key] },
64
+ reason: item.explanation.reason,
65
+ }),
66
+ }
67
+ : {}),
68
+ };
45
69
  }),
46
70
  gaps: selection.gaps.map((gap) => ({
47
71
  kind: 'missing_operation',
48
72
  description: gap.description,
73
+ ...('explanation' in gap
74
+ ? {
75
+ explanation: createApiSelectionExplanation({
76
+ context,
77
+ basis: { kind: 'catalog' },
78
+ reason: gap.explanation.reason,
79
+ }),
80
+ }
81
+ : {}),
49
82
  })),
50
83
  };
51
84
  }
@@ -0,0 +1,16 @@
1
+ import type { ApiInputRequirement } from '@openapi-flow/core';
2
+ import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
3
+ import type { z } from 'zod';
4
+ import type { createApiInputAnswerSourceSchema } from '../schemas/api-input-answer-source-schema.js';
5
+ export interface ExtractApiInputAnswersInput {
6
+ requirements: ApiInputRequirement[];
7
+ reply: string;
8
+ model: BaseChatModel;
9
+ }
10
+ export interface AnalyzeApiInputAnswersInput extends Omit<ExtractApiInputAnswersInput, 'model'> {
11
+ /** Required only when pending questions and a nonempty reply need interpretation. */
12
+ model?: BaseChatModel;
13
+ includeExplanations?: boolean;
14
+ }
15
+ export type ApiInputAnswersOutput = z.infer<ReturnType<typeof createApiInputAnswerSourceSchema>>;
16
+ export type ApiInputAnswerProposal = ApiInputAnswersOutput['answers'][number];
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { z } from 'zod';
2
+ import type { createApiSelectionAnalysisSchema } from '../schemas/api-selection-analysis-schema.js';
3
+ export type ApiSelectionAnalysisOutput = z.infer<ReturnType<typeof createApiSelectionAnalysisSchema>>;
@@ -0,0 +1 @@
1
+ export {};
@@ -1,7 +1,13 @@
1
1
  import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
2
- import type { ApiArgumentsSchemaInput } from '@openapi-flow/core';
3
- export interface GenerateApiArgumentsInput extends ApiArgumentsSchemaInput {
4
- callId: string;
5
- scenario: string;
6
- model: BaseChatModel;
2
+ import type { ApiLiteralGenerationInput, ApiArgumentGenerationContract, ApiArgumentProposalSchemaShape } from '@openapi-flow/core';
3
+ import type { z } from 'zod';
4
+ import type { createApiLiteralGenerationOutputSchema } from '../schemas/api-literal-generation-output-schema.js';
5
+ import type { apiLiteralGenerationReasonSchema } from '../schemas/api-literal-generation-output-schema.js';
6
+ export interface GenerateApiArgumentsInput extends ApiLiteralGenerationInput {
7
+ model?: BaseChatModel;
8
+ includeExplanations?: boolean;
7
9
  }
10
+ export type ApiLiteralGenerationOutput = z.infer<ReturnType<typeof createApiLiteralGenerationOutputSchema>>;
11
+ export type ApiLiteralGenerationOutputSchema = ApiArgumentGenerationContract['schema'] | z.ZodObject<ApiArgumentProposalSchemaShape & {
12
+ explanation: typeof apiLiteralGenerationReasonSchema;
13
+ }, z.core.$strict>;
@@ -1,8 +1,10 @@
1
1
  import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
2
- import type { ApiBindingMaterial, NativeOutputContract } from '@openapi-flow/core';
3
- export interface PlanApiBindingsInput {
4
- scenario: string;
5
- materials: ApiBindingMaterial[];
2
+ import type { ApiBindingPlanningInput, ApiBindingPlanProposal, ExplainedApiBindingCall } from '@openapi-flow/core';
3
+ export interface PlanApiBindingsInput extends ApiBindingPlanningInput {
6
4
  model: BaseChatModel;
7
- nativeOutputs?: NativeOutputContract[];
5
+ includeExplanations?: boolean;
8
6
  }
7
+ export interface ExplainedApiBindingPlanOutput extends Omit<ApiBindingPlanProposal, 'calls'> {
8
+ calls: ExplainedApiBindingCall[];
9
+ }
10
+ export type ApiBindingPlanOutput = ApiBindingPlanProposal | ExplainedApiBindingPlanOutput;
@@ -1,25 +1,76 @@
1
1
  import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
2
- import type { ApiBindingMaterial, PlannedNativeNode, WorkflowCapability, WorkflowPlanGap, WorkflowReviewGap } from '@openapi-flow/core';
3
- export interface PlanNativeNodesInput {
4
- planId: string;
5
- scenario: string;
6
- model: BaseChatModel;
7
- capabilities?: WorkflowCapability[];
8
- apiMaterials?: ApiBindingMaterial[];
9
- preparedNativeNodes?: PlannedNativeNode[];
10
- }
11
- export interface NativeNodeProposal {
12
- nativeNodes: PlannedNativeNode[];
13
- gaps: WorkflowPlanGap[];
14
- }
15
- export interface NativeNodePlan {
16
- nativeNodes: PlannedNativeNode[];
17
- gaps: WorkflowReviewGap[];
2
+ import type { z } from 'zod';
3
+ import type { JsonValueObject, NativeNodePlanningInput, NativePlanningProposal, NativePlanningResult, NativePlanningAssessment, NativePlanningCapabilityMaterial, NativeNodePlanningRecord, NativeInstanceSelectionInput, NativeNodeConfigurationInput, NativeSelectedPlanningInput } from '@openapi-flow/core';
4
+ export interface PlanNativeNodesInput extends NativeNodePlanningInput {
5
+ model?: BaseChatModel;
6
+ includeExplanations?: boolean;
7
+ }
8
+ export type NativeNodeProposal = NativePlanningProposal;
9
+ export type { NativePlanningCapabilityMaterial } from '@openapi-flow/core';
10
+ export interface NativeLiteralNodeOutput {
11
+ id: string;
12
+ capability: string;
13
+ parameters: JsonValueObject;
14
+ }
15
+ export interface NativeOwnedLiteralNodeOutput extends NativeLiteralNodeOutput {
16
+ parameterSource: 'literal';
17
+ }
18
+ export interface NativeRuntimeNodeOutput {
19
+ id: string;
20
+ capability: string;
21
+ parameterSource: 'workflow-input';
22
+ }
23
+ export type NativeNodeModelInstance = NativeLiteralNodeOutput | NativeOwnedLiteralNodeOutput | NativeRuntimeNodeOutput;
24
+ export interface NativeNodeModelProposal {
25
+ nativeNodes: NativeNodeModelInstance[];
26
+ gaps: NativePlanningProposal['gaps'];
27
+ }
28
+ export interface ExplainedNativeNodeProposal {
29
+ node: NativeNodeModelInstance;
30
+ reason: string;
31
+ }
32
+ export interface ExplainedNativeNodePlanningOutput {
33
+ decision: {
34
+ additions: ExplainedNativeNodeProposal[];
35
+ gaps: NativePlanningProposal['gaps'];
36
+ } | {
37
+ noAdditionalNodesReason: string;
38
+ gaps: NativePlanningProposal['gaps'];
39
+ };
40
+ }
41
+ export type NativeNodePlanningOutput = NativeNodeModelProposal | ExplainedNativeNodePlanningOutput;
42
+ export interface ResolvedNativeNodePlanningOutput {
43
+ proposal: NativeNodeProposal;
44
+ assessment?: NativePlanningAssessment;
45
+ }
46
+ export interface NativeNodeParameterContract {
47
+ schemas: z.ZodType<NativeNodeModelInstance>[];
48
+ material: NativePlanningCapabilityMaterial;
49
+ }
50
+ export interface NativeNodePlanningContract {
51
+ schema: z.ZodType<NativeNodePlanningOutput>;
52
+ capabilities: NativePlanningCapabilityMaterial[];
53
+ }
54
+ export interface NativeNodePlan extends NativePlanningResult {
55
+ nativePlanning?: NativeNodePlanningRecord;
18
56
  }
19
57
  export type NativeNodePlanningFailure = {
58
+ stage: 'instance-selection' | 'dependency-plan' | 'parameter-schema' | 'parameter-validation';
59
+ output: unknown;
60
+ } | {
20
61
  stage: 'proposal-schema';
21
62
  output: unknown;
22
63
  } | {
23
64
  stage: 'node-validation';
24
65
  output: NativeNodeProposal;
66
+ sourceOutput?: NativeNodePlanningOutput;
25
67
  };
68
+ export interface SelectNativeNodeInstancesInput extends NativeInstanceSelectionInput {
69
+ model?: BaseChatModel;
70
+ }
71
+ export interface GenerateNativeNodeParametersInput extends NativeNodeConfigurationInput {
72
+ model?: BaseChatModel;
73
+ }
74
+ export interface PlanNativeInstanceDependenciesInput extends NativeSelectedPlanningInput {
75
+ model?: BaseChatModel;
76
+ }
@@ -2,7 +2,11 @@ import type { BaseChatModel } from '@langchain/core/language_models/chat_models'
2
2
  import type { ApiOperationCandidate } from '@openapi-flow/core';
3
3
  import type { z } from 'zod';
4
4
  import type { createApiSelectionSchema } from '../schemas/api-selection-schema.js';
5
- export interface SelectApiOperationsInput {
5
+ export interface ApiSelectionModelOptions {
6
+ /** Opt in to reasons in the same call and code-owned discovery evidence. */
7
+ includeExplanations?: boolean;
8
+ }
9
+ export interface SelectApiOperationsInput extends ApiSelectionModelOptions {
6
10
  operations: ApiOperationCandidate[];
7
11
  scenario: string;
8
12
  model: BaseChatModel;
@@ -1,10 +1,15 @@
1
1
  import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
2
2
  import type { ApiOperationContract } from '@openapi-flow/core';
3
+ import type { z } from 'zod';
4
+ import type { createApiRequestMediaTypeSchema } from '../schemas/api-request-media-type-schema.js';
3
5
  export interface SelectApiRequestMediaTypeInput {
4
6
  operation: ApiOperationContract;
5
7
  scenario: string;
8
+ purpose?: string;
6
9
  model: BaseChatModel;
7
10
  }
8
- export interface ApiRequestMediaTypeOutput {
9
- requestMediaType: string | null;
11
+ export interface AnalyzeApiRequestMediaTypeInput extends SelectApiRequestMediaTypeInput {
12
+ /** Optional same-call model reason; code attaches unchanged request-body sources. */
13
+ includeExplanations?: boolean;
10
14
  }
15
+ export type ApiRequestMediaTypeOutput = z.infer<ReturnType<typeof createApiRequestMediaTypeSchema>>;
@@ -1,19 +1,28 @@
1
1
  import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
2
- import type { ReviewableWorkflowGraphProposal, ReviewableWorkflowPlanningContext, WorkflowReviewGap, PlannedNativeNode } from '@openapi-flow/core';
2
+ import type { ReviewableWorkflowGraphProposal, ReviewableWorkflowPlanningContext, WorkflowReviewGap, PlannedNativeNode, ExplainedWorkflowConnection, ExplainedWorkflowBlockedCall } from '@openapi-flow/core';
3
+ import type { ExplainedGraphNativeNode } from './workflow-planning.js';
3
4
  export interface PlanReviewableWorkflowGraphInput extends ReviewableWorkflowPlanningContext {
4
5
  scenario: string;
5
6
  model: BaseChatModel;
6
7
  gaps: WorkflowReviewGap[];
7
8
  preparedNativeNodes?: PlannedNativeNode[];
9
+ includeExplanations?: boolean;
8
10
  }
9
11
  export type ReviewableWorkflowGraphPlanningFailure = {
10
12
  stage: 'proposal-schema';
11
13
  output: unknown;
12
14
  } | {
13
15
  stage: 'graph-validation';
14
- output: ReviewableWorkflowGraphOutput;
16
+ output: ReviewableWorkflowGraphModelOutput;
15
17
  };
16
18
  export type ReviewableWorkflowGraphOutput = Omit<ReviewableWorkflowGraphProposal, 'nativeNodes' | 'blockedCalls'> & {
17
19
  additionalNativeNodes?: ReviewableWorkflowGraphProposal['nativeNodes'];
18
20
  blockedCalls?: ReviewableWorkflowGraphProposal['blockedCalls'];
19
21
  };
22
+ export interface ExplainedReviewableWorkflowGraphOutput extends ReviewableWorkflowGraphOutput {
23
+ reason: string;
24
+ additionalNativeNodes?: ExplainedGraphNativeNode[];
25
+ edges: ExplainedWorkflowConnection[];
26
+ blockedCalls?: ExplainedWorkflowBlockedCall[];
27
+ }
28
+ export type ReviewableWorkflowGraphModelOutput = ReviewableWorkflowGraphOutput | ExplainedReviewableWorkflowGraphOutput;
@@ -0,0 +1,3 @@
1
+ export type StructuredOutputSchemaDialect = 'draft-7' | 'draft-2020-12';
2
+ export type StructuredOutputSchemaDirection = 'input' | 'output';
3
+ export type StructuredOutputSchemaReuse = 'inline' | 'ref';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,23 @@
1
+ import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
2
+ import type { ApiOperationContract, ClarificationQuestionLimits, WorkflowClarificationOptions, WorkflowDecisionExplanation, WorkflowMessageEvidence, WorkflowNativeEvidence, WorkflowEntryPointEvidence, WorkflowPlanningContext, WorkflowRequirementsProposal, WorkflowSourceMessage } from '@openapi-flow/core';
3
+ export interface ClarifyWorkflowRequirementsInput {
4
+ context: WorkflowPlanningContext;
5
+ limits: ClarificationQuestionLimits;
6
+ options?: WorkflowClarificationOptions;
7
+ model: BaseChatModel;
8
+ /** Earlier intent, not authority for a new statement or answer. */
9
+ backgroundMessages?: WorkflowSourceMessage[];
10
+ }
11
+ export interface WorkflowClarificationOasCandidate {
12
+ candidateId: string;
13
+ operation: ApiOperationContract;
14
+ }
15
+ export interface ProposedWorkflowOasEvidence {
16
+ kind: 'oas';
17
+ candidateId: string;
18
+ }
19
+ export type ProposedWorkflowPlanningEvidence = WorkflowMessageEvidence | WorkflowNativeEvidence | WorkflowEntryPointEvidence | ProposedWorkflowOasEvidence;
20
+ export type WorkflowRequirementsModelOutput = WorkflowRequirementsProposal<ProposedWorkflowPlanningEvidence>;
21
+ export interface CanonicalWorkflowExplanationFields {
22
+ explanation?: WorkflowDecisionExplanation;
23
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
2
+ import type { WorkflowDraftApiBindingEditInput } from '@openapi-flow/core';
3
+ export interface PlanWorkflowDraftApiBindingEditInput extends WorkflowDraftApiBindingEditInput {
4
+ model: BaseChatModel;
5
+ }
6
+ export interface WorkflowDraftApiBindingEditPlanningFailure {
7
+ stage: 'proposal-schema' | 'proposal-validation';
8
+ output: unknown;
9
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
2
+ import type { WorkflowDraftApiCallPlanningInput, WorkflowDraftApiCallBindingsInput, WorkflowDraftApiCallArgumentsInput } from '@openapi-flow/core';
3
+ export interface SelectWorkflowDraftApiBindingInputsInput extends WorkflowDraftApiCallPlanningInput {
4
+ model?: BaseChatModel;
5
+ }
6
+ export interface PlanWorkflowDraftApiCallBindingsInput extends WorkflowDraftApiCallBindingsInput {
7
+ model?: BaseChatModel;
8
+ }
9
+ export interface GenerateWorkflowDraftApiCallArgumentsInput extends WorkflowDraftApiCallArgumentsInput {
10
+ model?: BaseChatModel;
11
+ }
12
+ export interface WorkflowDraftApiCallPlanningFailure {
13
+ stage: 'binding-inputs' | 'bindings' | 'arguments';
14
+ output: unknown;
15
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
2
+ import type { WorkflowDraftApiInputEditInput, WorkflowDraftApiInputEditContractInput } from '@openapi-flow/core';
3
+ export interface SelectWorkflowDraftApiInputEditTargetsInput extends WorkflowDraftApiInputEditInput {
4
+ model: BaseChatModel;
5
+ }
6
+ export interface GenerateWorkflowDraftApiInputEditsInput extends WorkflowDraftApiInputEditContractInput {
7
+ /** Not needed when the explicit contract contains removals only. */
8
+ model?: BaseChatModel;
9
+ }
10
+ export interface WorkflowDraftApiInputEditPlanningFailure {
11
+ stage: 'targets' | 'values';
12
+ output: unknown;
13
+ }