@exellix/graph-composer 2.3.1 → 2.4.2

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 (56) hide show
  1. package/README.md +4 -3
  2. package/dist/catalogMatchAssist.d.ts +1 -2
  3. package/dist/catalogMatchAssist.d.ts.map +1 -1
  4. package/dist/catalogMatchAssist.js +3 -4
  5. package/dist/cataloxCatalogBridge.d.ts +1 -2
  6. package/dist/cataloxCatalogBridge.d.ts.map +1 -1
  7. package/dist/cataloxCatalogBridge.js +2 -2
  8. package/dist/exampleGeneration.d.ts +11 -0
  9. package/dist/exampleGeneration.d.ts.map +1 -1
  10. package/dist/exampleGeneration.js +54 -0
  11. package/dist/funcxModel.d.ts +8 -0
  12. package/dist/funcxModel.d.ts.map +1 -0
  13. package/dist/funcxModel.js +10 -0
  14. package/dist/graphComposerActions.d.ts.map +1 -1
  15. package/dist/graphComposerActions.js +65 -0
  16. package/dist/graphComposerOutputValidation.d.ts +1 -0
  17. package/dist/graphComposerOutputValidation.d.ts.map +1 -1
  18. package/dist/graphComposerOutputValidation.js +1 -0
  19. package/dist/graphEntryContract.d.ts +114 -0
  20. package/dist/graphEntryContract.d.ts.map +1 -0
  21. package/dist/graphEntryContract.js +206 -0
  22. package/dist/graphEntryOutputValidation.d.ts +9 -0
  23. package/dist/graphEntryOutputValidation.d.ts.map +1 -0
  24. package/dist/graphEntryOutputValidation.js +276 -0
  25. package/dist/graphEntryPostProcess.d.ts +11 -0
  26. package/dist/graphEntryPostProcess.d.ts.map +1 -0
  27. package/dist/graphEntryPostProcess.js +114 -0
  28. package/dist/graphModelLayers.d.ts +19 -0
  29. package/dist/graphModelLayers.d.ts.map +1 -1
  30. package/dist/graphModelLayers.js +75 -0
  31. package/dist/index.d.ts +6 -4
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +6 -4
  34. package/dist/modelConfigPatchMerge.d.ts +6 -0
  35. package/dist/modelConfigPatchMerge.d.ts.map +1 -0
  36. package/dist/modelConfigPatchMerge.js +38 -0
  37. package/dist/runGraphComposer.d.ts +3 -2
  38. package/dist/runGraphComposer.d.ts.map +1 -1
  39. package/dist/runGraphComposer.js +25 -11
  40. package/dist/scopingNeedMatchAssist.d.ts +1 -2
  41. package/dist/scopingNeedMatchAssist.d.ts.map +1 -1
  42. package/dist/scopingNeedMatchAssist.js +3 -3
  43. package/dist/types.d.ts +8 -1
  44. package/dist/types.d.ts.map +1 -1
  45. package/functions/graph-composer/meta.json +130 -4
  46. package/functions/graph-composer/prompts/README.md +8 -0
  47. package/functions/graph-composer/prompts/action-review-graph-entry-contract.md +37 -0
  48. package/functions/graph-composer/prompts/action-suggest-graph-entry-conditions.md +13 -0
  49. package/functions/graph-composer/prompts/action-suggest-graph-entry-examples.md +14 -0
  50. package/functions/graph-composer/prompts/action-suggest-graph-entry-inputs.md +14 -0
  51. package/functions/graph-composer/prompts/action-suggest-graph-execution-defaults.md +15 -0
  52. package/functions/graph-composer/prompts/action-suggest-job-knowledge-refs.md +12 -0
  53. package/functions/graph-composer/prompts/action-suggest-job-model-defaults.md +14 -0
  54. package/functions/graph-composer/prompts/shared/graph-entry-scope.md +19 -0
  55. package/functions/graph-composer/prompts/shared/request-context.md +2 -1
  56. package/package.json +8 -7
@@ -345,3 +345,78 @@ export async function resolveGraphModelProfileName(profileName) {
345
345
  formatted,
346
346
  };
347
347
  }
348
+ function formatProfileSlot(profiles, providerIds, slot, includeProviderIds) {
349
+ const name = profiles[slot]?.trim() ?? "";
350
+ if (!name)
351
+ return "—";
352
+ const resolved = providerIds?.[slot]?.trim();
353
+ if (includeProviderIds &&
354
+ resolved &&
355
+ resolved.length > 0 &&
356
+ resolved !== name) {
357
+ return `${name} (${resolved})`;
358
+ }
359
+ return name;
360
+ }
361
+ /** Read `metadata.graphModelLayers` stamped by `stampGraphModelLayersOnGraph`. */
362
+ export function readNodeGraphModelLayersFromNode(node) {
363
+ const meta = readRecord(readRecord(node)?.metadata);
364
+ const raw = meta?.graphModelLayers;
365
+ if (raw === null || typeof raw !== "object" || Array.isArray(raw)) {
366
+ return undefined;
367
+ }
368
+ const layer = raw;
369
+ if (typeof layer.nodeId !== "string" ||
370
+ layer.winning === null ||
371
+ typeof layer.winning !== "object") {
372
+ return undefined;
373
+ }
374
+ return layer;
375
+ }
376
+ /**
377
+ * Human-readable model label for graph canvas / Agent View (graphs-studio).
378
+ * Requires `stampGraphModelLayersOnGraph` (or equivalent `metadata.graphModelLayers` on the node).
379
+ */
380
+ export function formatNodeWinningModelLabel(nodeOrLayers, options) {
381
+ const layers = nodeOrLayers !== null &&
382
+ typeof nodeOrLayers === "object" &&
383
+ "winning" in nodeOrLayers &&
384
+ "profiles" in (nodeOrLayers.winning ?? {})
385
+ ? nodeOrLayers
386
+ : readNodeGraphModelLayersFromNode(nodeOrLayers);
387
+ if (layers === undefined)
388
+ return undefined;
389
+ const includeProviderIds = options?.includeProviderIds !== false;
390
+ const mode = options?.mode ?? "main";
391
+ const { profiles, providerIds } = layers.winning;
392
+ if (!profiles)
393
+ return undefined;
394
+ if (mode === "main") {
395
+ const main = formatProfileSlot(profiles, providerIds, "skillModel", includeProviderIds);
396
+ return main === "—" ? undefined : main;
397
+ }
398
+ const triple = `PRE ${formatProfileSlot(profiles, providerIds, "preActionModel", includeProviderIds)} · MAIN ${formatProfileSlot(profiles, providerIds, "skillModel", includeProviderIds)} · POST ${formatProfileSlot(profiles, providerIds, "postActionModel", includeProviderIds)}`;
399
+ if (mode === "triple")
400
+ return triple;
401
+ const src = layers.winning.sourcePath?.trim() ||
402
+ layers.winning.source ||
403
+ "unknown";
404
+ return `${triple} — ${src}`;
405
+ }
406
+ /** Label for graph-root default from `metadata.graphModelLayersSummary`. */
407
+ export function formatGraphDefaultModelLabel(graph, options) {
408
+ const meta = readRecord(graph.metadata);
409
+ const summary = readRecord(meta?.graphModelLayersSummary);
410
+ const graphDefault = readRecord(summary?.graphDefault);
411
+ const profiles = graphDefault?.profiles;
412
+ const providerIds = graphDefault?.providerIds;
413
+ if (!profiles)
414
+ return undefined;
415
+ const includeProviderIds = options?.includeProviderIds !== false;
416
+ const mode = options?.mode ?? "triple";
417
+ if (mode === "main") {
418
+ const main = formatProfileSlot(profiles, providerIds, "skillModel", includeProviderIds);
419
+ return main === "—" ? undefined : `Job default: ${main}`;
420
+ }
421
+ return `Job default — PRE ${formatProfileSlot(profiles, providerIds, "preActionModel", includeProviderIds)} · MAIN ${formatProfileSlot(profiles, providerIds, "skillModel", includeProviderIds)} · POST ${formatProfileSlot(profiles, providerIds, "postActionModel", includeProviderIds)}`;
422
+ }
package/dist/index.d.ts CHANGED
@@ -2,25 +2,27 @@ export { composeInstructions, composeWorkerInstructions, formatSkillList, LOCKED
2
2
  export { GRAPH_COMPOSER_ACTION_REGISTRY, getActionDefinition, getActionDefinitionByToolName, requiredPromptPathsFromRegistry, loadWorkerBaseMarkdown, type GraphComposerAction, type GraphComposerActionDefinition, } from "./graphComposerActions.js";
3
3
  export { graphComposerPackRoot, readGraphComposerPromptFile, } from "./packDir.js";
4
4
  export { DEFAULT_UTILITY_SKILLS } from "./defaultUtilitySkills.js";
5
- export { runGraphComposer, runGraphWorker, resolveGraphComposerClient, getGraphComposerLlmClient, getPackDir, normalizeGraphComposerExplainOutput, normalizeReviewConceptComposerOutput, redactSecretsForLog, type RunGraphComposerOptions, } from "./runGraphComposer.js";
5
+ export { runGraphComposer, runGraphWorker, resolveGraphComposerClient, getGraphComposerLlmClient, getPackDir, normalizeGraphComposerExplainOutput, normalizeReviewConceptComposerOutput, normalizeReviewGraphEntryComposerOutput, redactSecretsForLog, type RunGraphComposerOptions, } from "./runGraphComposer.js";
6
6
  export type { LogRuntimeContext, LogLevel, PackageLogLevelsConfig, StackLoggingOptions, } from "@x12i/logxer";
7
7
  export { applyPackageLogLevelsFromEnv, configurePackageLogLevels, } from "@x12i/logxer";
8
8
  export { GRAPH_COMPOSER_LOG_ENV_PREFIX, configureGraphComposerLogging, createGraphComposerLogger, getGraphComposerLogger, getGraphComposerLoggingConfig, parseGraphComposerLogsLevel, withGraphComposerLogsLevel, type ConfigureGraphComposerLoggingOptions, type GraphComposerLoggingConfig, type GraphComposerLogsLevelInput, } from "./graphComposerLogging.js";
9
9
  export { applyGraphConceptPatchOnlyIfEmpty } from "./graphConceptPatchMerge.js";
10
+ export { applyModelConfigPatchGuard } from "./modelConfigPatchMerge.js";
11
+ export { resolveEffectiveGraphEntry, buildGraphEntryExampleJsonSchema, validateGraphEntryPaths, isValidGraphEntryPath, findGraphEntryEntityBindingMismatches, parseJsonExampleValue, resolveGraphEntryContextFromInput, assertGraphEntryAgentSurface, GRAPH_ENTRY_PATH_PREFIX, GRAPH_ENTRY_FINDING_CATEGORIES, GRAPH_EXECUTION_PATCH_ALLOWLIST, type GraphEntryPatch, type GraphEntryInputRow, type GraphEntryExampleRow, type GraphEntryFinding, type ModelConfigPatch, type JobPagentiKnowledgePatch, type GraphExecutionPatch, type GraphResponsePatch, type GraphEntryAgentContext, type TaskNodeAgentContext, type ComposerAgentSurface, } from "./graphEntryContract.js";
10
12
  export { runGraphComposerAgent, type GraphComposerAgentResult, type GraphComposerAgentOrchestrationStep, type RunGraphComposerAgentOptions, } from "./graphComposerAgent.js";
11
13
  export type { GraphComposerInput, GraphComposerAgentInput, GraphComposerIntent, GraphComposerConstraints, SkillDescriptor, PrimaryIntentType, GraphConceptStatus, GraphConceptEntityBindings, GraphConceptPatch, GraphConceptPatchKey, GraphConceptRequirementsPatch, GraphConceptCoreTaskPatchItem, RequirementOptionCandidate, RequirementOptionEntry, CatalogCandidates, ScopingMapCandidate, NarrixTemplateCandidate, } from "./types.js";
12
14
  export { buildCatalogMatchHints, type CatalogMatchAssistOptions, } from "./catalogMatchAssist.js";
13
15
  export { buildScopingNeedMatchHints, type ScopingNeedMatchAssistOptions, } from "./scopingNeedMatchAssist.js";
14
- export { validateCreateModifyOutput, validateSuggestCatalogResolutionOutput, validateSuggestCatalogCreationsOutput, validateSuggestScopingNeedMatchOutput, validateSuggestScopingMapCreationOutput, validateReviewConceptOutput, validateReviewConceptOutputAgainstInput, type OutputValidationContext, } from "./graphComposerOutputValidation.js";
16
+ export { validateCreateModifyOutput, validateSuggestCatalogResolutionOutput, validateSuggestCatalogCreationsOutput, validateSuggestScopingNeedMatchOutput, validateSuggestScopingMapCreationOutput, validateReviewConceptOutput, validateReviewConceptOutputAgainstInput, validateReviewGraphEntryContractOutput, validateSuggestGraphEntryInputsOutput, validateSuggestGraphEntryExamplesOutput, validateSuggestGraphEntryConditionsOutput, validateSuggestJobModelDefaultsOutput, validateSuggestJobKnowledgeRefsOutput, validateSuggestGraphExecutionDefaultsOutput, type OutputValidationContext, } from "./graphComposerOutputValidation.js";
15
17
  export type { WoroxScopingMapCatalogCreatePayload, WoroxScopedDataDocumentShape, } from "./scopingCatalogHostTypes.js";
16
18
  export { loadExampleGraph, inputExplainNetworkVulnSubnet, inputSuggestConceptObjectiveNetworkVulnSubnet, inputReviewConceptIoSmoke, } from "./exampleInputs.js";
17
- export { buildGraphInputExampleGuidance, generateGraphJsonInputExample, generateJsonExample, generateMdExample, generateContentExample, type GenerateGraphJsonInputExampleParams, type GenerateJsonExampleResult, type GenerateMdExampleParams, type GenerateMdExampleResult, type GenerateContentExampleParams, type GenerateContentExampleResult, } from "./exampleGeneration.js";
19
+ export { buildGraphInputExampleGuidance, buildGraphEntryExampleGuidance, generateGraphJsonInputExample, generateGraphEntryInputExample, generateJsonExample, generateMdExample, generateContentExample, type GenerateGraphJsonInputExampleParams, type GenerateGraphEntryInputExampleParams, type GenerateJsonExampleResult, type GenerateMdExampleParams, type GenerateMdExampleResult, type GenerateContentExampleParams, type GenerateContentExampleResult, } from "./exampleGeneration.js";
18
20
  export { parseGraphConceptStory, parseGraphConceptStoryBody, isGraphConceptStoryDescription, GRAPH_CONCEPT_STORY_MARKER, } from "./parseGraphConceptStory.js";
19
21
  export type { ParsedGraphConcept } from "./parseGraphConceptStory.js";
20
22
  export { reportTaskNodeProtocolGaps, DEFAULT_LOCAL_SKILL_KEYS, type AiTaskProfileMetadata, type TaskNodeProtocolGap, type TaskNodeProtocolIssueCode, type WebScopingNodeConfig, type InputSynthesisNodeConfig, type InputSynthesisDestination, } from "./aiTaskProfile.js";
21
23
  export { assertCanonicalGraphDocument, getCanonicalGraphDocumentViolations, CANONICAL_GRAPH_TOP_LEVEL_KEYS, GRAPH_ENGINE_MEMORY_PATH_ROOTS, isAllowedGraphEngineMemoryPath, collectAiTasksNodeExtensionIssues, assertAiTasksNodeExtensionsValid, resolveGraphEngineMemoryPathValue, buildGraphEngineMemoryResolutionRootFromWorkingMemory, DEFAULT_GRAPH_AI_MODEL_PROFILE_CONFIG, looksLikeConcreteModelId, isGraphAiProfileName, type GraphEngineMemoryResolutionRoot, } from "./graphEngineBridge.js";
22
24
  export { collectCanonicalGraphWarnings } from "./canonicalGraphWarnings.js";
23
- export { analyzeGraphModelLayers, stampGraphModelLayersOnGraph, graphModelLayerLegend, graphModelProfileAccent, resolveGraphModelProfileName, type AnalyzeGraphModelLayersOptions, type GraphModelLayerPhase, type GraphModelLayerSource, type GraphModelLayerStackEntry, type GraphModelLayersAnalysis, type GraphModelLayersRuntimeOverlay, type GraphModelProfilesTriple, type NodeGraphModelLayers, } from "./graphModelLayers.js";
25
+ export { analyzeGraphModelLayers, stampGraphModelLayersOnGraph, graphModelLayerLegend, graphModelProfileAccent, resolveGraphModelProfileName, readNodeGraphModelLayersFromNode, formatNodeWinningModelLabel, formatGraphDefaultModelLabel, type FormatNodeModelLabelOptions, type AnalyzeGraphModelLayersOptions, type GraphModelLayerPhase, type GraphModelLayerSource, type GraphModelLayerStackEntry, type GraphModelLayersAnalysis, type GraphModelLayersRuntimeOverlay, type GraphModelProfilesTriple, type NodeGraphModelLayers, } from "./graphModelLayers.js";
24
26
  export { resolveTaskNodeInputs, resolveTaskNodeInputsConfig, resolveTaskNodeTaskVariable, canonicalizeGraphTaskNodeTaskVariable, canonicalizeGraphModel, reportTaskNodeInputsLayoutIssues, taskNodeInputsLayoutWarningMessage, isTaskVariablePathRef, isTaskNode, isFinalizerNode, type TaskNodeInputsLayoutIssue, type TaskNodeInputsLayoutIssueCode, } from "./taskNodeTaskVariable.js";
25
27
  export { createCatalox, bindCataloxContext, Catalox, CataloxBound, } from "@x12i/catalox/embedder";
26
28
  export type { CataloxContext, CataloxRuntimeConfig, } from "@x12i/catalox/embedder";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -2,21 +2,23 @@ export { composeInstructions, composeWorkerInstructions, formatSkillList, LOCKED
2
2
  export { GRAPH_COMPOSER_ACTION_REGISTRY, getActionDefinition, getActionDefinitionByToolName, requiredPromptPathsFromRegistry, loadWorkerBaseMarkdown, } from "./graphComposerActions.js";
3
3
  export { graphComposerPackRoot, readGraphComposerPromptFile, } from "./packDir.js";
4
4
  export { DEFAULT_UTILITY_SKILLS } from "./defaultUtilitySkills.js";
5
- export { runGraphComposer, runGraphWorker, resolveGraphComposerClient, getGraphComposerLlmClient, getPackDir, normalizeGraphComposerExplainOutput, normalizeReviewConceptComposerOutput, redactSecretsForLog, } from "./runGraphComposer.js";
5
+ export { runGraphComposer, runGraphWorker, resolveGraphComposerClient, getGraphComposerLlmClient, getPackDir, normalizeGraphComposerExplainOutput, normalizeReviewConceptComposerOutput, normalizeReviewGraphEntryComposerOutput, redactSecretsForLog, } from "./runGraphComposer.js";
6
6
  export { applyPackageLogLevelsFromEnv, configurePackageLogLevels, } from "@x12i/logxer";
7
7
  export { GRAPH_COMPOSER_LOG_ENV_PREFIX, configureGraphComposerLogging, createGraphComposerLogger, getGraphComposerLogger, getGraphComposerLoggingConfig, parseGraphComposerLogsLevel, withGraphComposerLogsLevel, } from "./graphComposerLogging.js";
8
8
  export { applyGraphConceptPatchOnlyIfEmpty } from "./graphConceptPatchMerge.js";
9
+ export { applyModelConfigPatchGuard } from "./modelConfigPatchMerge.js";
10
+ export { resolveEffectiveGraphEntry, buildGraphEntryExampleJsonSchema, validateGraphEntryPaths, isValidGraphEntryPath, findGraphEntryEntityBindingMismatches, parseJsonExampleValue, resolveGraphEntryContextFromInput, assertGraphEntryAgentSurface, GRAPH_ENTRY_PATH_PREFIX, GRAPH_ENTRY_FINDING_CATEGORIES, GRAPH_EXECUTION_PATCH_ALLOWLIST, } from "./graphEntryContract.js";
9
11
  export { runGraphComposerAgent, } from "./graphComposerAgent.js";
10
12
  export { buildCatalogMatchHints, } from "./catalogMatchAssist.js";
11
13
  export { buildScopingNeedMatchHints, } from "./scopingNeedMatchAssist.js";
12
- export { validateCreateModifyOutput, validateSuggestCatalogResolutionOutput, validateSuggestCatalogCreationsOutput, validateSuggestScopingNeedMatchOutput, validateSuggestScopingMapCreationOutput, validateReviewConceptOutput, validateReviewConceptOutputAgainstInput, } from "./graphComposerOutputValidation.js";
14
+ export { validateCreateModifyOutput, validateSuggestCatalogResolutionOutput, validateSuggestCatalogCreationsOutput, validateSuggestScopingNeedMatchOutput, validateSuggestScopingMapCreationOutput, validateReviewConceptOutput, validateReviewConceptOutputAgainstInput, validateReviewGraphEntryContractOutput, validateSuggestGraphEntryInputsOutput, validateSuggestGraphEntryExamplesOutput, validateSuggestGraphEntryConditionsOutput, validateSuggestJobModelDefaultsOutput, validateSuggestJobKnowledgeRefsOutput, validateSuggestGraphExecutionDefaultsOutput, } from "./graphComposerOutputValidation.js";
13
15
  export { loadExampleGraph, inputExplainNetworkVulnSubnet, inputSuggestConceptObjectiveNetworkVulnSubnet, inputReviewConceptIoSmoke, } from "./exampleInputs.js";
14
- export { buildGraphInputExampleGuidance, generateGraphJsonInputExample, generateJsonExample, generateMdExample, generateContentExample, } from "./exampleGeneration.js";
16
+ export { buildGraphInputExampleGuidance, buildGraphEntryExampleGuidance, generateGraphJsonInputExample, generateGraphEntryInputExample, generateJsonExample, generateMdExample, generateContentExample, } from "./exampleGeneration.js";
15
17
  export { parseGraphConceptStory, parseGraphConceptStoryBody, isGraphConceptStoryDescription, GRAPH_CONCEPT_STORY_MARKER, } from "./parseGraphConceptStory.js";
16
18
  export { reportTaskNodeProtocolGaps, DEFAULT_LOCAL_SKILL_KEYS, } from "./aiTaskProfile.js";
17
19
  export { assertCanonicalGraphDocument, getCanonicalGraphDocumentViolations, CANONICAL_GRAPH_TOP_LEVEL_KEYS, GRAPH_ENGINE_MEMORY_PATH_ROOTS, isAllowedGraphEngineMemoryPath, collectAiTasksNodeExtensionIssues, assertAiTasksNodeExtensionsValid, resolveGraphEngineMemoryPathValue, buildGraphEngineMemoryResolutionRootFromWorkingMemory, DEFAULT_GRAPH_AI_MODEL_PROFILE_CONFIG, looksLikeConcreteModelId, isGraphAiProfileName, } from "./graphEngineBridge.js";
18
20
  export { collectCanonicalGraphWarnings } from "./canonicalGraphWarnings.js";
19
- export { analyzeGraphModelLayers, stampGraphModelLayersOnGraph, graphModelLayerLegend, graphModelProfileAccent, resolveGraphModelProfileName, } from "./graphModelLayers.js";
21
+ export { analyzeGraphModelLayers, stampGraphModelLayersOnGraph, graphModelLayerLegend, graphModelProfileAccent, resolveGraphModelProfileName, readNodeGraphModelLayersFromNode, formatNodeWinningModelLabel, formatGraphDefaultModelLabel, } from "./graphModelLayers.js";
20
22
  export { resolveTaskNodeInputs, resolveTaskNodeInputsConfig, resolveTaskNodeTaskVariable, canonicalizeGraphTaskNodeTaskVariable, canonicalizeGraphModel, reportTaskNodeInputsLayoutIssues, taskNodeInputsLayoutWarningMessage, isTaskVariablePathRef, isTaskNode, isFinalizerNode, } from "./taskNodeTaskVariable.js";
21
23
  export { createCatalox, bindCataloxContext, Catalox, CataloxBound, } from "@x12i/catalox/embedder";
22
24
  export { loadCatalogCandidatesFromCatalox, unifiedCatalogItemToSkillDescriptor, unifiedCatalogItemToScopingMapCandidate, unifiedCatalogItemToNarrixTemplateCandidate, } from "./cataloxCatalogBridge.js";
@@ -0,0 +1,6 @@
1
+ import type { ModelConfigPatch } from "./graphEntryContract.js";
2
+ /**
3
+ * Apply modelConfigPatch without dropping existing cases unless replaceMode (FR-G6).
4
+ */
5
+ export declare function applyModelConfigPatchGuard(patch: ModelConfigPatch, existingGraph: object): ModelConfigPatch;
6
+ //# sourceMappingURL=modelConfigPatchMerge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelConfigPatchMerge.d.ts","sourceRoot":"","sources":["../src/modelConfigPatchMerge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAQhE;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,gBAAgB,EACvB,aAAa,EAAE,MAAM,GACpB,gBAAgB,CAiClB"}
@@ -0,0 +1,38 @@
1
+ function asObject(v) {
2
+ return v !== null && typeof v === "object" && !Array.isArray(v)
3
+ ? v
4
+ : undefined;
5
+ }
6
+ /**
7
+ * Apply modelConfigPatch without dropping existing cases unless replaceMode (FR-G6).
8
+ */
9
+ export function applyModelConfigPatchGuard(patch, existingGraph) {
10
+ const graph = asObject(existingGraph);
11
+ const existing = asObject(graph?.modelConfig);
12
+ const existingCases = Array.isArray(existing?.cases) ? existing.cases : [];
13
+ if (patch.mode === "replaceDefault" && patch.modelConfig) {
14
+ return patch;
15
+ }
16
+ if (patch.cases && patch.cases.length > 0) {
17
+ if (patch.mode === "appendCase" || existingCases.length === 0) {
18
+ return patch;
19
+ }
20
+ return {
21
+ ...patch,
22
+ mode: "appendCase",
23
+ cases: [...existingCases, ...patch.cases],
24
+ };
25
+ }
26
+ if (patch.modelConfig && existingCases.length > 0) {
27
+ return {
28
+ mode: "appendCase",
29
+ cases: [
30
+ ...existingCases,
31
+ {
32
+ modelConfig: patch.modelConfig,
33
+ },
34
+ ],
35
+ };
36
+ }
37
+ return patch;
38
+ }
@@ -1,7 +1,6 @@
1
1
  import { type LogRuntimeContext } from "@x12i/logxer";
2
2
  import { type GraphComposerLogsLevelInput, type StackLoggingOptions } from "./graphComposerLogging.js";
3
3
  import type { Client } from "@x12i/funcx";
4
- import { type LlmMode } from "@x12i/funcx/functions";
5
4
  import type { GraphComposerInput } from "./types.js";
6
5
  import { redactSecretsForLog } from "./redactForLog.js";
7
6
  export { redactSecretsForLog };
@@ -10,6 +9,7 @@ export { applyGraphConceptPatchOnlyIfEmpty } from "./graphConceptPatchMerge.js";
10
9
  * Maps `suggestedCatalogArtifacts` to `catalogProposals` when the latter is empty
11
10
  * or missing (consumer contract alias). No-op for other actions.
12
11
  */
12
+ export { normalizeReviewGraphEntryComposerOutput } from "./graphEntryPostProcess.js";
13
13
  export declare function normalizeReviewConceptComposerOutput(out: Record<string, unknown>): void;
14
14
  /**
15
15
  * If `action` is `explain` and known fields are flattened at the top level, moves them under `explanation` (see `functions/graph-composer/meta.json`). Maps `perNode` / `perNodeDescriptions` to `nodeDescriptions`. No-op for other actions or when `explanation` is already an object.
@@ -30,7 +30,8 @@ export type RunGraphComposerOptions = {
30
30
  * If you pass `client`, set `connectTimeoutMs` on your own `createClient` instead; this field is then ignored.
31
31
  */
32
32
  connectTimeoutMs?: number;
33
- mode?: LlmMode;
33
+ /** Legacy alias for {@link model} (funcx 4.4+). */
34
+ mode?: string;
34
35
  model?: string;
35
36
  temperature?: number;
36
37
  maxTokens?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"runGraphComposer.d.ts","sourceRoot":"","sources":["../src/runGraphComposer.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAC;AACtB,OAAO,EAGL,KAAK,2BAA2B,EAChC,KAAK,mBAAmB,EACzB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAIL,KAAK,OAAO,EACb,MAAM,uBAAuB,CAAC;AAc/B,OAAO,KAAK,EAAE,kBAAkB,EAAmB,MAAM,YAAY,CAAC;AAEtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAC/B,OAAO,EAAE,iCAAiC,EAAE,MAAM,6BAA6B,CAAC;AAgHhF;;;GAGG;AACH,wBAAgB,oCAAoC,CAClD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,IAAI,CASN;AAuDD;;GAEG;AACH,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,OAAO,GACd,OAAO,CAKT;AA0ED,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,2FAA2F;IAC3F,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,SAAS,CAAC,EAAE,2BAA2B,CAAC;IACxC;;;OAGG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B;;;OAGG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC,CAAC;AAmDF,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,uBAAuB,GAC/B,MAAM,GAAG,SAAS,CA4BpB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,GAAE,uBAA4B,GACpC,MAAM,CAYR;AAqLD,wBAAsB,cAAc,CAClC,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,OAAO,CAAC,CAElB;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC"}
1
+ {"version":3,"file":"runGraphComposer.d.ts","sourceRoot":"","sources":["../src/runGraphComposer.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAC;AACtB,OAAO,EAGL,KAAK,2BAA2B,EAChC,KAAK,mBAAmB,EACzB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAoB1C,OAAO,KAAK,EAAE,kBAAkB,EAAmB,MAAM,YAAY,CAAC;AAEtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAQxD,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAC/B,OAAO,EAAE,iCAAiC,EAAE,MAAM,6BAA6B,CAAC;AAgHhF;;;GAGG;AACH,OAAO,EAAE,uCAAuC,EAAE,MAAM,4BAA4B,CAAC;AAErF,wBAAgB,oCAAoC,CAClD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,IAAI,CASN;AA6DD;;GAEG;AACH,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,OAAO,GACd,OAAO,CAKT;AA0ED,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,2FAA2F;IAC3F,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,SAAS,CAAC,EAAE,2BAA2B,CAAC;IACxC;;;OAGG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B;;;OAGG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC,CAAC;AAmDF,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,uBAAuB,GAC/B,MAAM,GAAG,SAAS,CA4BpB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,GAAE,uBAA4B,GACpC,MAAM,CAYR;AA0LD,wBAAsB,cAAc,CAClC,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,OAAO,CAAC,CAElB;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC"}
@@ -4,6 +4,7 @@ import { DebugLogAbstract, exceptionEvidence, fieldEvidence, runWithLogContext,
4
4
  import { getGraphComposerLogger, withGraphComposerLogsLevel, } from "./graphComposerLogging.js";
5
5
  import { createClient } from "@x12i/funcx";
6
6
  import { buildRequestPrompt, executeFuncx as invokeFuncxPack, } from "@x12i/funcx/functions";
7
+ import { resolveFuncxModel } from "./funcxModel.js";
7
8
  import { composeWorkerInstructions } from "./composeInstructions.js";
8
9
  import { buildCatalogMatchHints } from "./catalogMatchAssist.js";
9
10
  import { buildScopingNeedMatchHints } from "./scopingNeedMatchAssist.js";
@@ -14,6 +15,7 @@ import { isGraphConceptStoryDescription, parseGraphConceptStory, } from "./parse
14
15
  import { applyGraphConceptPatchOnlyIfEmpty } from "./graphConceptPatchMerge.js";
15
16
  import { redactSecretsForLog } from "./redactForLog.js";
16
17
  import { validateReviewConceptOutputAgainstInput } from "./graphComposerOutputValidation.js";
18
+ import { normalizeReviewGraphEntryComposerOutput, processSuggestGraphEntryExamplesOutput, processSuggestJobModelDefaultsOutput, } from "./graphEntryPostProcess.js";
17
19
  export { redactSecretsForLog };
18
20
  export { applyGraphConceptPatchOnlyIfEmpty } from "./graphConceptPatchMerge.js";
19
21
  function processSuggestConceptObjectiveOutput(shaped, intent, existingGraph) {
@@ -102,6 +104,7 @@ function assertInputShape(input) {
102
104
  * Maps `suggestedCatalogArtifacts` to `catalogProposals` when the latter is empty
103
105
  * or missing (consumer contract alias). No-op for other actions.
104
106
  */
107
+ export { normalizeReviewGraphEntryComposerOutput } from "./graphEntryPostProcess.js";
105
108
  export function normalizeReviewConceptComposerOutput(out) {
106
109
  const cur = out.catalogProposals;
107
110
  const hasProposals = Array.isArray(cur) && cur.length > 0;
@@ -137,7 +140,13 @@ function unwrapComposerPayload(result) {
137
140
  io.findings !== undefined ||
138
141
  io.catalogProposals !== undefined ||
139
142
  io.suggestedCatalogArtifacts !== undefined ||
140
- io.requirementOptions !== undefined) {
143
+ io.requirementOptions !== undefined ||
144
+ io.graphEntryPatch !== undefined ||
145
+ io.suggestedGraphEntryPatch !== undefined ||
146
+ io.modelConfigPatch !== undefined ||
147
+ io.jobPagentiKnowledgePatch !== undefined ||
148
+ io.graphExecutionPatch !== undefined ||
149
+ io.graphResponsePatch !== undefined) {
141
150
  return inner;
142
151
  }
143
152
  }
@@ -329,13 +338,7 @@ async function runGraphWorkerInner(input, options) {
329
338
  getActionDefinition(action);
330
339
  const rules = loadRules();
331
340
  const system = composeWorkerInstructions(action, normalized.aiSkills, normalized.utilitySkills, normalized.skillMode);
332
- /** Per-mode system text for aifunctions-js (same pack for all tiers unless you add ultra-specific prompts). */
333
- const instructions = {
334
- weak: system,
335
- normal: system,
336
- strong: system,
337
- ultra: system,
338
- };
341
+ const instructions = system;
339
342
  const client = resolveGraphComposerClient(options);
340
343
  let requestForPrompt = normalized;
341
344
  const assist = options.catalogMatchListsAssist !== false &&
@@ -391,7 +394,7 @@ async function runGraphWorkerInner(input, options) {
391
394
  composedInstructionChars: system.length,
392
395
  debugKind: DebugLogAbstract.EVENT,
393
396
  });
394
- const mode = options.mode ?? "strong";
397
+ const model = resolveFuncxModel({ model: options.model, mode: options.mode ?? "strong" });
395
398
  try {
396
399
  // One @x12i/funcx function-pack LLM call for this intent.action (not a DAG node skill).
397
400
  const result = await invokeFuncxPack({
@@ -400,8 +403,7 @@ async function runGraphWorkerInner(input, options) {
400
403
  instructions,
401
404
  rules,
402
405
  client,
403
- mode,
404
- model: options.model,
406
+ model,
405
407
  temperature: options.temperature,
406
408
  maxTokens: options.maxTokens,
407
409
  });
@@ -414,9 +416,21 @@ async function runGraphWorkerInner(input, options) {
414
416
  if (action === "reviewConcept") {
415
417
  normalizeReviewConceptComposerOutput(o);
416
418
  }
419
+ if (action === "reviewGraphEntryContract") {
420
+ normalizeReviewGraphEntryComposerOutput(o);
421
+ }
417
422
  if (action === "suggestConceptObjective") {
418
423
  processSuggestConceptObjectiveOutput(o, normalized.intent, normalized.existingGraph);
419
424
  }
425
+ if (action === "suggestJobModelDefaults") {
426
+ processSuggestJobModelDefaultsOutput(o, normalized.existingGraph);
427
+ }
428
+ if (action === "suggestGraphEntryExamples") {
429
+ await processSuggestGraphEntryExamplesOutput(o, normalized, {
430
+ repairWithLlm: false,
431
+ });
432
+ delete o._graphEntryExamplesIncomplete;
433
+ }
420
434
  validateGraphComposerOutput(action, shaped, normalized);
421
435
  if (action === "reviewConcept") {
422
436
  validateReviewConceptOutputAgainstInput(shaped, {
@@ -1,9 +1,8 @@
1
1
  import type { Client } from "@x12i/funcx";
2
- import type { LlmMode } from "@x12i/funcx/functions";
3
2
  import type { GraphComposerInput } from "./types.js";
4
3
  export type ScopingNeedMatchAssistOptions = {
5
4
  client: Client;
6
- mode?: LlmMode;
5
+ mode?: string;
7
6
  model?: string;
8
7
  };
9
8
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"scopingNeedMatchAssist.d.ts","sourceRoot":"","sources":["../src/scopingNeedMatchAssist.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AA0BpB,MAAM,MAAM,6BAA6B,GAAG;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,kBAAkB,EACzB,IAAI,EAAE,6BAA6B,GAClC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAqC9C"}
1
+ {"version":3,"file":"scopingNeedMatchAssist.d.ts","sourceRoot":"","sources":["../src/scopingNeedMatchAssist.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AA0BpB,MAAM,MAAM,6BAA6B,GAAG;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,kBAAkB,EACzB,IAAI,EAAE,6BAA6B,GAClC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAoC9C"}
@@ -1,4 +1,5 @@
1
1
  import { matchLists } from "@x12i/funcx/functions";
2
+ import { resolveFuncxModel } from "./funcxModel.js";
2
3
  function scopingCatalogItems(maps) {
3
4
  return maps.map((m) => ({
4
5
  scopingMapId: m.scopingMapId,
@@ -45,14 +46,13 @@ export async function buildScopingNeedMatchHints(input, opts) {
45
46
  ...(hint !== undefined ? { graphHint: hint } : {}),
46
47
  },
47
48
  ];
48
- const { client, mode, model } = opts;
49
+ const { client } = opts;
49
50
  const r = await matchLists({
50
51
  list1,
51
52
  list2: scopingCatalogItems(maps),
52
53
  guidance: "Match the data need to the single best scoping map or questionId candidate. Prefer precise title/description fit over generic maps. Use reason briefly.",
53
- mode,
54
54
  client,
55
- model,
55
+ model: resolveFuncxModel(opts),
56
56
  }, { rules: [] });
57
57
  return { matches: r.matches, unmatched: r.unmatched };
58
58
  }
package/dist/types.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import type { GraphComposerAgentContext } from "./graphEntryContract.js";
2
+ export type { GraphComposerAgentContext, GraphEntryAgentContext } from "./graphEntryContract.js";
1
3
  export type SkillDescriptor = {
2
4
  skillKey: string;
3
5
  description: string;
@@ -115,7 +117,7 @@ export type RequirementOptionEntry = {
115
117
  needsNewArtifact: boolean;
116
118
  };
117
119
  export type GraphComposerIntent = {
118
- action: "create" | "modify" | "explain" | "suggestConceptObjective" | "suggestCatalogResolution" | "suggestCatalogCreations" | "suggestScopingNeedMatch" | "suggestScopingMapCreation" | "reviewConcept";
120
+ action: "create" | "modify" | "explain" | "suggestConceptObjective" | "suggestCatalogResolution" | "suggestCatalogCreations" | "suggestScopingNeedMatch" | "suggestScopingMapCreation" | "reviewConcept" | "reviewGraphEntryContract" | "suggestGraphEntryInputs" | "suggestGraphEntryExamples" | "suggestGraphEntryConditions" | "suggestJobModelDefaults" | "suggestJobKnowledgeRefs" | "suggestGraphExecutionDefaults";
119
121
  description: string;
120
122
  focusNodeIds?: string[];
121
123
  /**
@@ -138,6 +140,11 @@ export type GraphComposerConstraints = {
138
140
  export type GraphComposerInput = {
139
141
  intent: GraphComposerIntent;
140
142
  existingGraph?: object;
143
+ /**
144
+ * Agent View envelope from graphs-studio (`buildGraphEntryAgentContext` / node context).
145
+ * Preferred over duplicating the same keys under `analysisContext`.
146
+ */
147
+ agentContext?: GraphComposerAgentContext;
141
148
  /**
142
149
  * Optional analyzer payload (execution order, node IO, issues, layers, …).
143
150
  * Strongly recommended for `suggestConceptObjective`.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -93,6 +93,86 @@
93
93
  "source": { "type": "string" }
94
94
  }
95
95
  },
96
+ "GraphEntryInputRow": {
97
+ "type": "object",
98
+ "required": ["path"],
99
+ "properties": {
100
+ "kind": { "enum": ["scalar", "record"] },
101
+ "path": {
102
+ "type": "string",
103
+ "description": "Must start with execution.input."
104
+ },
105
+ "required": { "type": "boolean" },
106
+ "entityIds": { "type": "array", "items": { "type": "string" } },
107
+ "label": { "type": "string" },
108
+ "description": { "type": "string" }
109
+ }
110
+ },
111
+ "GraphEntryExampleRow": {
112
+ "type": "object",
113
+ "required": ["format", "value"],
114
+ "properties": {
115
+ "path": { "type": "string" },
116
+ "format": { "enum": ["json", "markdown", "text"] },
117
+ "value": { "type": "string" }
118
+ }
119
+ },
120
+ "GraphEntryPatch": {
121
+ "type": "object",
122
+ "properties": {
123
+ "inputs": {
124
+ "type": "array",
125
+ "items": { "$ref": "#/$defs/GraphEntryInputRow" }
126
+ },
127
+ "exampleInputs": {
128
+ "type": "array",
129
+ "items": { "$ref": "#/$defs/GraphEntryExampleRow" }
130
+ },
131
+ "conditions": { "type": "object" }
132
+ }
133
+ },
134
+ "ModelConfigPatch": {
135
+ "type": "object",
136
+ "properties": {
137
+ "mode": { "enum": ["appendCase", "replaceDefault"] },
138
+ "cases": { "type": "array", "items": { "type": "object" } },
139
+ "modelConfig": {
140
+ "type": "object",
141
+ "properties": {
142
+ "preActionModel": { "type": "string" },
143
+ "skillModel": { "type": "string" },
144
+ "postActionModel": { "type": "string" }
145
+ }
146
+ }
147
+ }
148
+ },
149
+ "JobPagentiKnowledgePatch": {
150
+ "type": "object",
151
+ "properties": {
152
+ "refs": {
153
+ "type": "array",
154
+ "items": {
155
+ "type": "object",
156
+ "required": ["catalogId", "itemId"],
157
+ "properties": {
158
+ "catalogId": { "type": "string" },
159
+ "itemId": { "type": "string" }
160
+ }
161
+ }
162
+ },
163
+ "append": {
164
+ "type": "array",
165
+ "items": {
166
+ "type": "object",
167
+ "required": ["catalogId", "itemId"],
168
+ "properties": {
169
+ "catalogId": { "type": "string" },
170
+ "itemId": { "type": "string" }
171
+ }
172
+ }
173
+ }
174
+ }
175
+ },
96
176
  "RequirementOptionEntry": {
97
177
  "type": "object",
98
178
  "description": "Ambiguous requirement field: candidates and whether a new catalog artifact is needed",
@@ -238,7 +318,14 @@
238
318
  "suggestCatalogCreations",
239
319
  "suggestScopingNeedMatch",
240
320
  "suggestScopingMapCreation",
241
- "reviewConcept"
321
+ "reviewConcept",
322
+ "reviewGraphEntryContract",
323
+ "suggestGraphEntryInputs",
324
+ "suggestGraphEntryExamples",
325
+ "suggestGraphEntryConditions",
326
+ "suggestJobModelDefaults",
327
+ "suggestJobKnowledgeRefs",
328
+ "suggestGraphExecutionDefaults"
242
329
  ]
243
330
  },
244
331
  "description": {
@@ -265,9 +352,13 @@
265
352
  }
266
353
  },
267
354
  "existingGraph": {
268
- "description": "Required for modify, explain, suggestConceptObjective, suggestCatalogResolution, suggestCatalogCreations, reviewConcept. Optional for suggestScopingNeedMatch (context) and suggestScopingMapCreation (alignment).",
355
+ "description": "Required for modify, explain, suggestConceptObjective, suggestCatalogResolution, suggestCatalogCreations, reviewConcept, and graph-entry actions. Optional for suggestScopingNeedMatch (context) and suggestScopingMapCreation (alignment).",
269
356
  "type": "object"
270
357
  },
358
+ "agentContext": {
359
+ "type": "object",
360
+ "description": "graphs-studio Agent View envelope (surface graph-entry | task-node, graphEntry, jobDefaults, …)"
361
+ },
271
362
  "analysisContext": {
272
363
  "type": "object",
273
364
  "description": "Optional graph analysis output (execution order, IO, issues, …). Strongly recommended for suggestConceptObjective, reviewConcept, and suggestCatalog*."
@@ -336,7 +427,14 @@
336
427
  "suggestCatalogCreations",
337
428
  "suggestScopingNeedMatch",
338
429
  "suggestScopingMapCreation",
339
- "reviewConcept"
430
+ "reviewConcept",
431
+ "reviewGraphEntryContract",
432
+ "suggestGraphEntryInputs",
433
+ "suggestGraphEntryExamples",
434
+ "suggestGraphEntryConditions",
435
+ "suggestJobModelDefaults",
436
+ "suggestJobKnowledgeRefs",
437
+ "suggestGraphExecutionDefaults"
340
438
  ]
341
439
  },
342
440
  "graph": {
@@ -426,13 +524,41 @@
426
524
  "summary": { "type": "string" }
427
525
  }
428
526
  },
527
+ "graphEntryPatch": {
528
+ "$ref": "#/$defs/GraphEntryPatch",
529
+ "description": "Partial metadata.graphEntry patch for graph-entry actions"
530
+ },
531
+ "suggestedGraphEntryPatch": {
532
+ "$ref": "#/$defs/GraphEntryPatch",
533
+ "description": "Alias for graphEntryPatch on reviewGraphEntryContract"
534
+ },
535
+ "modelConfigPatch": {
536
+ "$ref": "#/$defs/ModelConfigPatch",
537
+ "description": "Root modelConfig patch (suggestJobModelDefaults / reviewGraphEntryContract)"
538
+ },
539
+ "jobPagentiKnowledgePatch": {
540
+ "$ref": "#/$defs/JobPagentiKnowledgePatch",
541
+ "description": "Root jobPagentiKnowledge refs patch"
542
+ },
543
+ "graphExecutionPatch": {
544
+ "type": "object",
545
+ "description": "Partial metadata.graphExecution patch"
546
+ },
547
+ "graphResponsePatch": {
548
+ "type": "object",
549
+ "description": "Layer 08 response / studio persistency patch (separate from graphEntry)"
550
+ },
429
551
  "findings": {
430
552
  "type": "array",
431
- "description": "Present for reviewConcept — categorized review findings",
553
+ "description": "Present for reviewConcept and reviewGraphEntryContract — categorized review findings",
432
554
  "items": {
433
555
  "type": "object",
434
556
  "required": ["category", "severity", "summary"],
435
557
  "properties": {
558
+ "scopeType": {
559
+ "type": "string",
560
+ "description": "graph for reviewGraphEntryContract findings"
561
+ },
436
562
  "category": { "type": "string" },
437
563
  "severity": { "type": "string" },
438
564
  "summary": { "type": "string" },